1include <BOSL2/std.scad>
 2
 3// Inspired by https://www.youtube.com/watch?v=3V80-Fm_5Gs
 4// See http://iotic.com/flutomat/
 5
 6
 7// Params start
 8// Body
 9inside_diameter = 16; //mm
10wall_thickness = 1.25; //mm
11mouthpiece_length = 22; //mm
12mouthpiece_angle = 45; //deg
13
14// Tunings
15edge_distance = 270;//mm distance from center of edge distance to end of flute
16extra_tuning_length = 10; //mm
17extra_tuning_diameter = 2.5; //mm
18
19holes = [[7,146.5],[7.5,128],[8,107],[6.5,83.5],[9,65],[8,39]];//[diameter,distance_from_end_of_flute]
20
21// Duct
22edge_length = 5;//mm
23duct_width=7;//mm
24edge_angle=60;//deg
25edge_fine_tune_x = 0.7; //mm until edge is continuous
26edge_fine_tune_z = 1.3; //mm until the curve is gone from the cylinder
27mouthpiece_external_cut_width=4;//mm
28mouthpiece_external_cut_height=10;//mm
29
30// Print
31tolerance = 0.05; //mm
32clip_plane_size = [100,100,100];//mm
33resolution = 100;
34
35//Calc
36body_length=mouthpiece_length+edge_distance+edge_length/2+extra_tuning_length;
37
38// Params end
39
40module clip_angle(){
41    translate([-inside_diameter/2-wall_thickness*2,-inside_diameter/2-wall_thickness*2,mouthpiece_length]) rotate([0,mouthpiece_angle,0])cube(clip_plane_size);}
42
43difference(){
44        cylinder(d=inside_diameter-tolerance*2,h=mouthpiece_length,$fn=resolution);
45    clip_angle();
46}